home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / LGP250S1.ZIP / src / libgplus.5 / libgplus / tests / trandom.cc < prev    next >
C/C++ Source or Header  |  1993-04-27  |  2KB  |  104 lines

  1. /*
  2.  a test file for Random classes
  3. */
  4.  
  5. #include <assert.h>
  6. #include <ACG.h>
  7. #include <MLCG.h>
  8. #include <SmplStat.h>
  9. #include <SmplHist.h>
  10. #include <Binomial.h>
  11. #include <Erlang.h>
  12. #include <Geom.h>
  13. #include <HypGeom.h>
  14. #include <NegExp.h>
  15. #include <Normal.h>
  16. #include <LogNorm.h>
  17. #include <Poisson.h>
  18. #include <Uniform.h>
  19. #include <DiscUnif.h>
  20. #include <Weibull.h>
  21.  
  22. void demo(Random& r)
  23. {
  24.   SampleStatistic s;
  25.   cout << "five samples:\n";
  26.   for (int i = 0; i < 5; ++i)
  27.   {
  28.     double x = r();
  29.     cout << x << " ";
  30.     s += x;
  31.   }
  32.   cout << "\nStatistics for 100 samples:\n";
  33.   for (; i < 100; ++i)
  34.   {
  35.     double x = r();
  36.     s += x;
  37.   }
  38.   cout << "samples: " << s.samples() << " ";
  39.   cout << "min: " << s.min() << " ";
  40.   cout << "max: " << s.max() << "\n";
  41.   cout << "mean: " << s.mean() << " ";
  42.   cout << "stdDev: " << s.stdDev() << " ";
  43.   cout << "var: " << s.var() << " ";
  44.   cout << "confidence(95): " << s.confidence(95) << "\n";
  45. }
  46.  
  47. main()
  48. {
  49.   int i;
  50.   ACG gen1;
  51.   cout << "five random ACG integers:\n";
  52.   for (i = 0; i < 5; ++i)
  53.     cout << gen1.asLong() << " ";
  54.   cout << "\n";
  55.  
  56.   MLCG gen2;
  57.   cout << "five random MLCG integers:\n";
  58.   for (i = 0; i < 5; ++i)
  59.     cout << gen2.asLong() << " ";
  60.   cout << "\n";
  61.   
  62.   Binomial r1( 100, 0.5, &gen1);
  63.   cout << "Binomial r1( 100, 0.50, &gen1) ...\n";
  64.   demo(r1);
  65.   Erlang r2( 2.0, 0.5, &gen1);
  66.   cout << "Erlang r2( 2.0, 0.5, &gen1) ...\n";
  67.   demo(r2);
  68.   Geometric r3( 0.5, &gen1);
  69.   cout << "Geometric r3(&gen1, 0.5)...\n";
  70.   demo(r3);
  71.   HyperGeometric r4( 10.0, 150.0, &gen1);
  72.   cout << "HyperGeometric r4( 10.0, 150.0, &gen1)...\n";
  73.   demo(r4);
  74.   NegativeExpntl r5( 1.0, &gen1);
  75.   cout << "NegativeExpntl r5( 1.0, &gen1)...\n";
  76.   demo(r5);
  77.   Normal r6( 0.0, 1.0, &gen1);
  78.   cout << "Normal r6( 0.0, 1.0, &gen1)...\n";
  79.   demo(r6);
  80.   LogNormal r7( 1.0, 1.0, &gen1);
  81.   cout << "LogNormal r7( 1.0, 1.0, &gen1)...\n";
  82.   demo(r7);
  83.   Poisson r8( 2.0, &gen1);
  84.   cout << "Poisson r8( 2.0, &gen1)...\n";
  85.   demo(r8);
  86.   DiscreteUniform r9( 0, 1, &gen1);
  87.   cout << "DiscreteUniform r9( 0.0, 1.0, &gen1)...\n";
  88.   demo(r9);
  89.   Uniform r10( 0.0, 1.0, &gen1);
  90.   cout << "Uniform r10( 0.0, 1.0, &gen1)...\n";
  91.   demo(r10);
  92.   Weibull r11( 0.5, 1.0, &gen1);
  93.   cout << "Weibull r11( 0.5, 1.0, &gen1)...\n";
  94.   demo(r11);
  95.  
  96.   cout << "SampleHistogram for 100 Normal samples\n";
  97.   SampleHistogram h(-4.0, 4.0);
  98.   for (i = 0; i < 100; ++i)
  99.     h += r6();
  100.   h.printBuckets(cout);
  101.   cout << "\nEnd of test\n";
  102.   return 0;
  103. }
  104.